﻿// ===============================================================================
//  Copyright © ymind.net. All rights reserved .
//  官方网站：http://ymind.net/
//  版权所有：彦铭工作室 老陈出品
// ===============================================================================

using System;
using System.Runtime.InteropServices;
using System.Text;

namespace Lcsoft.TemplateEngine.Core
{
	/// <summary>
	/// 为老陈 Asp.Net 模板引擎生成的代码提供动静平衡支持的接口。
	/// </summary>
	/// <remarks>动静平衡（Static And Dynamic Equilibrium）即动态页面和静态页面自动切换的策略的一种实现。</remarks>
	[ComVisible(true)]
	public interface ISDEHandler
	{
		/// <summary>
		/// 获取或设置保存文件时使用的字符编码。
		/// </summary>
		Encoding TextEncoding { get; }

		/// <summary>
		/// 获取或设置静态文件的有效期。
		/// </summary>
		TimeSpan ExpirationTime { get; set; }

		/// <summary>
		/// 获取或设置静态文件的完整文件名（相对于应用程序根目录）。
		/// </summary>
		string StaticFileName { get; set; }

		/// <summary>
		/// 获取或设置动态文件的完整文件名（相对于应用程序根目录）。
		/// </summary>
		string DynamicFileName { get; set; }

		/// <summary>
		/// 执行动静平衡支持程序。
		/// </summary>
		/// <returns>如果静态文件不需要更新且已经成功切换到并运行了静态文件，则返回 true；否则返回 false。</returns>
		bool ExecuteSDE();

		/// <summary>
		/// 更新静态文件。
		/// </summary>
		/// <param name="document">包含了已经生成的静态文件的文档代码的字符串。</param>
		void UpdateStaticFile(StringBuilder document);
	}
}
